# [Spring] Bean Scope
Bean์ ์ฌ์ฉ ๋ฒ์๋ฅผ ๋งํ๋ Bean Scope์ ์ข
๋ฅ์ ๋ํด ์์๋ณด์
Bean์ ์คํ๋ง์์ ์ฌ์ฉํ๋ POJO ๊ธฐ๋ฐ ๊ฐ์ฒด๋ค.
์ํฉ๊ณผ ํ์์ ๋ฐ๋ผ Bean์ ์ฌ์ฉํ ๋ ํ๋๋ง ๋ง๋ค์ด์ผ ํ ์๋ ์๊ณ , ์ฌ๋ฌ๊ฐ๊ฐ ํ์ํ ๋๋ ์๊ณ , ์ด๋ค ํ ์์ ์์๋ง ์ฌ์ฉํด์ผํ ๋๊ฐ ์์ ์ ์๋ค.
์ด๋ฅผ ์ํด Scope๋ฅผ ์ค์ ํด์ Bean์ ์ฌ์ฉ ๋ฒ์๋ฅผ ๊ฐ๋ฐ์๊ฐ ์ค์ ํ ์ ์๋ค.
์ฐ์ ๋ฐ๋ก ์ค์ ์ ํด์ฃผ์ง ์์ผ๋ฉด, Spring์์ Bean์ Singleton
์ผ๋ก ์์ฑ๋๋ค. ์ฑ๊ธํค ํจํด์ฒ๋ผ ํน์ ํ์
์ Bean์ ๋ฑ ํ๋๋ง ๋ง๋ค๊ณ ๋ชจ๋ ๊ณต์ ํด์ ์ฌ์ฉํ๊ธฐ ์ํจ์ด๋ค. ๋ณดํต์ Bean์ ์ด๋ ๊ฒ ํ๋๋ง ๋ง๋ค์ด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด์ง๋ง, ์๊ตฌ์ฌํญ์ด๋ ๊ตฌํ์ ๋ฐ๋ผ ์๋ ์๋ ์์ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ Bean Scope๋ ์ฑ๊ธํค ๋ง๊ณ ๋ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ์ง์ํด์ค๋ค.
# Scope ์ข ๋ฅ
# singleton
ํด๋น Bean์ ๋ํด IoC ์ปจํ ์ด๋์์ ๋จ ํ๋์ ๊ฐ์ฒด๋ก๋ง ์กด์ฌํ๋ค.
# prototype
ํด๋น Bean์ ๋ํด ๋ค์์ ๊ฐ์ฒด๊ฐ ์กด์ฌํ ์ ์๋ค.
# request
ํด๋น Bean์ ๋ํด ํ๋์ HTTP Request์ ๋ผ์ดํ์ฌ์ดํด์์ ๋จ ํ๋์ ๊ฐ์ฒด๋ก๋ง ์กด์ฌํ๋ค.
# session
ํด๋น Bean์ ๋ํด ํ๋์ HTTP Session์ ๋ผ์ดํ์ฌ์ดํด์์ ๋จ ํ๋์ ๊ฐ์ฒด๋ก๋ง ์กด์ฌํ๋ค.
# global session
ํด๋น Bean์ ๋ํด ํ๋์ Global HTTP Session์ ๋ผ์ดํ์ฌ์ดํด์์ ๋จ ํ๋์ ๊ฐ์ฒด๋ก๋ง ์กด์ฌํ๋ค.
request, session, global session์ MVC ์น ์ดํ๋ฆฌ์ผ์ด์ ์์๋ง ์ฌ์ฉํจ
Scope๋ค์ Bean์ผ๋ก ๋ฑ๋กํ๋ ํด๋์ค์ ์ด๋ ธํ ์ด์ ์ผ๋ก ์ค์ ํด์ค ์ ์๋ค.
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
@Scope("prototype")
@Component
public class UserController {
}
# [์ฐธ๊ณ ์๋ฃ]
โ - CSRF & XSS - [Spring] MVC Framework โ